package com.bstek.uflo.form.action;

import org.hibernate.Session;

import com.bstek.dorado.view.View;

/**
 * @author Jacky.gao
 * @since 2013年11月12日
 */
public interface Action {
	/**
	 * @return 返回动作名称
	 */
	String getName();
	
	/**
	 * @return 返回对应按钮上的图标文件URL
	 */
	String getIcon();
	
	/**
	 * 在View初始化时执行该访问，用于我们在View中动态添加相关组件，比如添加查看流程图组件，等。
	 * @param view Dorado页面的View对象
	 */
	void onViewInit(View view);
	
	/**
	 * 用于执行当前动作包含的的业务逻辑
	 * @param formData 当前提供的表单数据对应的Map对象
	 * @param session Hibernate Session，可实现业务数据持久化
	 */
	void execute(FormData formData,Session session);
	
	/**
	 * 定义与当前Action绑定的Button的onClick事件，如果该方法不返回null，那么目标Button将直接与相应的UpdateAction绑定;<br>
	 * 否则将只在Button的OnClick事件中执行当前定义的JavaScript脚本，所以我们需要在脚本中手工执行对应的UpdateAction。
	 * @param actionId Dorado7 View中要执行当前业务的UpdateAction的id
	 * @return 返回具体的JavaScript脚本，这些脚本将会被放置到Button的onClick事件中执行
	 */
	String getClickScript(String actionId);
}
